Robotic arm system and object avoidance methods

ABSTRACT

One variation of a method for controlling a robotic arm includes: moving the robotic arm through a trajectory; at a first time in which the robotic arm occupies a first position along the trajectory, measuring a first capacitance of a first sense circuit comprising a first electrode extending over a first arm segment of the robotic arm; at a second time in which the robotic arm occupies a second position along the trajectory, measuring a second capacitance of the first sense circuit; calculating a first rate of change in capacitance of the first sense circuit based on a difference between the first capacitance and the second capacitance; in response to the first rate of change in capacitance of the first sense circuit exceeding a threshold rate of change, issuing a proximity alarm; and reducing a speed of the robotic arm moving through the trajectory in response to the proximity alarm.

CROSS-REFERENCE TO RELATED APPLICATIONS

This Application is a continuation application of U.S. patentapplication Ser. No. 15/260,451, filed on 9 Sep. 2016, which claims thebenefit of U.S. Provisional Application No. 62/216,328, filed on 9 Sep.2015, each of which is incorporated in its entirety by this reference.

TECHNICAL FIELD

This invention relates generally to the field of robotic arms and morespecifically to a new and useful robotic arm system and object avoidancemethods in the field of robotic arms.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a schematic representation of a robotic arm system;

FIG. 2 is a schematic representation of one variation of the robotic armsystem;

FIG. 3 is a schematic representation of one variation of the robotic armsystem;

FIG. 4 is a flowchart representation of a method;

FIG. 5 is a flowchart representation of one variation of the method;

FIG. 6 is a flowchart representation of one variation of the method; and

FIG. 7 is a flowchart representation of one variation of the method.

DESCRIPTION OF THE EMBODIMENTS

The following description of embodiments of the invention is notintended to limit the invention to these embodiments but rather toenable a person skilled in the art to make and use this invention.Variations, configurations, implementations, example implementations,and examples described herein are optional and are not exclusive to thevariations, configurations, implementations, example implementations,and examples they describe. The invention described herein can includeany and all permutations of these variations, configurations,implementations, example implementations, and examples.

1. Robotic Arm System

As shown in FIG. 1, a robotic arm 102 system includes: a base 110; afirst arm segment 120 coupled to the base 110 via a first actuatableaxis 124; a second arm segment 130 coupled to the base 110 via a secondactuatable axis 134; a set of electrodes 121, 131 arranged across thefirst arm segment 120 and the second arm segment 130; a controller 123accumulating a first set of capacitance values of electrodes in the setof electrodes during a first sampling period and accumulating a secondset of capacitance values of electrodes in the set of electrodes duringa second sampling period succeeding the first sampling period; aprocessor 150 determining a first proximity of an object to the roboticarm 102 during the first sampling period based on the first set ofcapacitance values received from the controller 123, determining asecond proximity of the object to the robotic arm 102 during the secondsampling period based on the second set of capacitance values receivedfrom the controller 123, and setting a reduced maximum speed of thefirst actuatable axis 124 and a reduced maximum speed of the secondactuatable axis 134 following the second sampling period based on thesecond proximity and a difference between the first proximity and thesecond proximity.

One variation of the system 100 includes: a base 110; a first armsegment 120; a second arm segment 130 interposed between the base 110and the first arm segment 120, coupled to the first arm segment 120 viaa first actuatable axis 124, and coupled to the base 110 via a secondactuatable axis 134; an end effector 140 coupled to an end of the firstarm segment 120 opposite the first actuatable axis 124; a firstelectrode 121 arranged across a region of the first arm segment 120 andelectrically coupled to a first sense circuit 122; and a controller 123configured to measure capacitance of the first sense circuit 122 duringactuation of the first actuatable axis 124 and the second actuatableaxis 134.

2. Method

As shown in FIG. 4, the system 100 can execute a method for controllinga robotic arm 102, including: moving the robotic arm 102 through atrajectory in Block S110; at a first time in which the robotic arm 102occupies a first position along the trajectory, measuring a firstcapacitance of a first sense circuit 122 comprising a first electrode121 extending over a first arm segment 120 of the robotic arm 102 inBlock S120; at a second time in which the robotic arm 102 occupies asecond position along the trajectory, the second time succeeding thefirst time, measuring a second capacitance of the first sense circuit122 in Block S122; calculating a first rate of change in capacitance ofthe first sense circuit 122 based on a difference between the firstcapacitance and the second capacitance in Block S130; in response to thefirst rate of change in capacitance of the first sense circuit 122exceeding a threshold rate of change, issuing a proximity alarm in BlockS140; and reducing a current speed of the robotic arm 102 moving throughthe trajectory in response to the proximity alarm in Block S150.

3. Applications

Generally, the system 100 defines a robotic arm 102 that includes a setof rigid arm segments and a set of actuatable axes—interspersed betweenrigid arm segments—that can be actuated to manipulate the robotic arm102 within a space. The set of rigid arm segments and actuatable axescan be mounted to a base on one end and coupled to an end effector on anopposite end, and the system 100 can drive each actuatable axisaccording to a prerecorded or pre-generated motion program (or“trajectory,” or toolpath) to perform a defined task. For example, thesystem 100 can include a motorized gripper end effector transientlycoupled to the end of the robotic arm 102 opposite the base 110, and thesystem 100 can navigate the robotic arm 102 through a preplannedtrajectory and execute an end effector actuation routine to select anobject from a parts bin and to place the object onto an assembly. Inanother example, the system 100 can include a polymer extrusion endeffector and execute a trajectory to print an object with materialdispensed from the polymer extrusion end effector. In yet anotherexample, the system 100 can include a laser cutter end effector andexecute a trajectory to cut a two-dimensional shape from a sheet ofmaterial stock while the laser cutter end effector is active.

The system 100 also includes: a set of electrodes arranged within or onone or more arm segments of the robotic arm 102; and one or morecontrollers configured to selectively read capacitance values of theelectrodes (or capacitances of sense circuits coupled to theseelectrodes) while the system 100 is in operation. For example, thecontroller 123 can sequentially drive a set of sense circuits coupled toelectrodes on the robotic arm 102 and implement self-capacitance sensingtechniques to record leakage current through each sense circuit.Alternatively, the controller 123 can selectively ground single groundelectrode channels and drive (perpendicular) sense electrode channels inan array of ground and sense electrodes patterned across an arm segmentand then implement mutual-capacitance sensing techniques to measurecharge/discharge times, resonant frequencies, or other capacitancevalues for each ground/sense electrode junction accordingly. Forexample, the system 100 can include an electrode patterned across an armsegment to form a plate of capacitors within an LC tank sense circuit,and the controller 123 can measure a resonant frequency of the LC tanksense circuit. The controller 123 can then pass thesecapacitance-related data to the processor 150.

The processor can transform these data into: presence of an object nearthe robotic arm 102 or to a particular region of an arm segment withinthe robotic arm 102; a position of an object relative to the system 100,such as relative to a reference point on the base 110; and/or whether anearby object is moving toward the robotic arm 102 or whether therobotic arm 102 is moving toward the object. As the robotic arm 102moves from a first position to a second position, the processor 150 canadditionally or alternatively determine whether a rate of change incapacitance of an electrode (or sensor circuit coupled to the electrode)on a segment of the robotic arm 102 differs from an expected rate ofchange in capacitance from the first position to the second position andidentify presence of a new object within a three-dimensional volumereachable by the end effector 140 (hereinafter an “operating volume”)accordingly.

The processor 150 can then set motion limits—such as maximum speeds ofeach actuatable axis or positional (e.g., angular position) bounds oneach actuatable axis—to avoid impact with such an object or to limit animpact with the object to a substantially minimal speed, such as if auser's hand is moving toward the robotic arm 102. In particular, thesystem 100 can execute Blocks of the method in real-time while therobotic arm 102 is in motion to sense changes within the operatingvolume—such as presence of a new static or dynamic object within theoperating volume—and to set speed limits for actuation of the roboticarm 102 or stop motion of the robotic arm 102 altogether when a changein the operating volume is detected.

The processor 150 can also modify a trajectory under execution by thesystem 100 based on the presence of a new object near the robotic arm102, such as determined from deviations in the rate of change incapacitance of a sense circuit over a baseline or anticipated rate ofchange in capacitance. The system 100 can therefore include: a roboticarm 102 containing one or more rigid arm segments manipulated by one ormore actuatable axes; one or more electrodes arranged over the armsegments; a controller can sample the electrodes (or sensor circuitscoupled to the electrodes) according to self- and/or mutual-capacitancetechniques, and the system 100 can manipulate data received from theseelectrodes to avoid impact with nearby objects while in motion.

The system 100 is described herein as reading capacitance values of oneor more electrodes arranged on an arm segment of a robotic arm 102. Inparticular, the system 100 can read a total charge/discharge time, acharge time, a discharge time, a resonant frequency, an RC timeconstant, and/or an LC time constant, etc. of a sense circuit containingan electrode. The system 100 can then transform one capacitance valueread from the sense circuit into an estimated distance or distance rangebetween the arm segment and an object nearby and issue a proximity alarmif an estimated distance between an object and the robotic arm 102 fallsbelow a threshold distance, such as a static threshold distance oftwelve inches or a dynamic threshold distance based on the current speedof the robotic arm 102. The system 100 can additionally oralternatively: calculate a rate of change in capacitance value (e.g., arate of change in resonant frequency) of a sense circuit between twopositions occupied by the robotic arm 102 during its motion along apreplanned trajectory; determine if a new object (i.e., an unanticipatedobject) is near the robotic arm 102 if the actual rate of change incapacitance of the sense circuit deviates from a baseline or expectedrate of change between the same two positions along the preplannedtrajectory; and issue a proximity alarm if presence of a new object isdetermined. The system 100 can then modify motion of the robotic arm 102along its current trajectory responsive to a proximity alarm, such as byreducing the maximum allowable speed of each actuatable axis or stoppingmotion of the robotic arm 102 altogether.

4. Robotic Arm 102 and Arm Segments

The system 100 can define a robotic arm 102 that includes: a base; anend effector or end effector junction 182 configured to transientlyengage an end effector; multiple rigid sections (or “arm segments”)arranged in series between the base 110 and the end effector 140 or endeffector junction 182; and an actuatable axis interposed between thebase 110 and a nearest arm segment and between each arm segment. Eachactuatable axis can include an internal actuator, such as a servo motor;alternatively, each actuatable axis can be coupled to an actuatorarranged in the base 110, such as via a set of cables or linkages. Whenthe actuator of an actuatable axis is driven, such as by a motor driverarranged in the base 110 and controlled by the processor 150, therelative angular position of two ends of the actuatable axis can change,thereby moving an arm segment on one side of the actuatable axisrelative to an arm segment (or relative to the base 110) on the otherend of the actuatable axis. An actuatable axis can also include one ormore position sensors, such as an optical encoder and a pair of limitswitches, and the processor 150 can sample these position sensors totrack the relative positions of two arm segments (or an arm segment andthe base 110) on each side of the actuatable axis.

The processor 150 can execute Block S110 of the method, which recitesmoving the robotic arm 102 through a trajectory, by controlling variousmotor drivers to actuate each actuatable axis. For example, theprocessor 150 can: load a three-dimensional preplanned trajectorydefining waypoints along a target path for traversal by the end effector140 through space; calculate a target position for each actuatable axisat each waypoint; and then implement closed-loop controls to navigatethe robotic arm 102 sequentially through each waypoint along thepreplanned trajectory based on positions read from position sensors ineach actuatable axis.

During execution of a trajectory, the processor 150 can cooperate withthe controller 123 to execute other Blocks of the method substantiallyin real-time to detect changes in the operating volume occupied by therobotic arm 102—such as new (i.e., unknown) static objects within theoperating volume or dynamic objects moving through the operating volume(e.g., an operators hand)—and to cease or modify motion of the roboticarm 102 accordingly.

5. Sense Electrodes

The system includes a first electrode arranged across a region of thefirst arm segment 120 and electrically coupled to a first circuit.Generally, the system 100 includes electrodes arranged across an armsegment of the robotic arm 102 and connected to a sense circuitexhibiting a measurable characteristic that changes proportionally(e.g., linearly, logarithmically, inversely, etc.) with distance betweenthe electrode and a massive object nearby. The controller 123 can readthis measurable characteristic—such as total charge/discharge time, acharge time, a discharge time, a resonant frequency, an RC timeconstant, or an LC time constant (hereinafter “capacitance value”)—ofthe sense circuit over time, and the processor 150 can analyze thesemeasurable characteristics to selectively trigger proximity alarms, asdescribed below.

For example, the system 100 can include: a sense electrode and a groundelectrode pair that are both arranged on an arm segment to form acapacitor; an inductor electrically coupled to the sense and groundelectrodes to form the sense circuit; and a signal generator coupled tothe sense circuit. The controller 123 can then: set the signal generatorto drive the sense circuit at a baseline frequency (e.g., a typicalresonant frequency of the sense circuit), read the voltage over thesense circuit, vary the output frequency of the signal generator until amaximum voltage over the circuit is reached, and then store this finaloutput frequency as the resonant frequency of the sense circuit.

53.1 Electrode Array

The system 100 can also include multiple electrodes (with a commonground electrode or paired with unique ground electrodes) and sensecircuits on one or more arm segments within the robotic arm 102. In oneimplementation, an arm segment includes a set of sense electrodesarranged across the arm segment in a projected self-capacitance array (a“sense electrode array”). In this implementation, the sense electrodearray can include: a first linear array of electrodes on the dorsal sideof an arm segment, a second linear array of electrodes on theright-lateral side of the arm segment, a third linear array ofelectrodes on the ventral side of the arm segment, and a fourth lineararray of electrodes on the left-lateral side of the arm segment, asshown in FIG. 2. Each linear array of electrodes can include four(relatively) large electrodes arranged in a line parallel to the axis ofthe arm segment. For example, for a 12″-long arm segment defining a1″-outside diameter cylindrical section, each linear array of electrodescan be printed or otherwise applied to the outer surface of the armsegment, wherein each electrode is 1.5″ in length (i.e., along the axisof the arm segment), is offset from an adjacent electrode in the samelinear array by a center-to-center distance of 2″, and spans a radialdistance of ˜80° about the exterior surface of the arm segment, and eachof the four electrodes in each linear array can be electricallyconnected to one channel on the controller 123 via a relatively thin(e.g., 0.05″-wide) trace. In this example, each linear array ofelectrodes can be radially offset from an adjacent linear array by 90°.The controller 123 and the processor 150 can then cooperate to scan eachelectrode in each linear array on the arm segment in series, detectchanges in capacitance values (e.g., current draw) in select electrodesacross two or more sampling periods, and correlate these changes incapacitance values with proximity of an object to select electrodes.

In the foregoing implementation, the processor 150 can thus determine ifan object is approaching the dorsal, ventral, left-lateral, orright-lateral side of an arm segment (or if the dorsal, ventral,left-lateral, or right-lateral side of the arm segment is approaching anobject) and whether the object is approaching the arm segment from therear, center, or front of the arm segment based on known positions ofelectrodes exhibiting greatest changes in capacitance (e.g., deviationsfrom expected rate of change in resonant frequency) from one samplingposition or position of the robotic arm 102 to the nest. The processor150 can also interpolate capacitance value changes betweenradially-offset electrodes on an arm segment to determine if an objectis approaching the left-dorsal, right-dorsal, left-ventral, orright-ventral side of the arm segment (or if the left-dorsal,right-dorsal, left-ventral, or right-ventral side of the arm segment isapproaching the object) or any other angular resolution. The processor150 can similarly interpolate changes in capacitance value betweenlinearly-offset electrodes along one linear array of electrodes toestimate a point on the arm segment nearest an approaching object.However, in this implementation, an arm segment can include any othernumber or configuration of electrodes of any other geometry.

In another implementation, an arm segment includes a set of senseelectrodes arranged in a projected mutual-capacitance array including: afirst linear array of sense electrodes on the dorsal side of an armsegment, a second linear array of sense electrodes on the right-lateralside of the arm segment, a third linear array of sense electrodes on theventral side of the arm segment, and a fourth linear array of senseelectrodes on the left-lateral side of the arm segment; a first lineararray of ground electrodes on the right-dorsal side of the arm segment,a second linear array of ground electrodes on the right-ventral side ofthe arm segment, a third linear array of ground electrodes on theleft-ventral side of the arm segment, and a fourth linear array ofground electrodes on the left-dorsal side of the arm segment; and alayer of non-conductive dielectric material interposed between thelinear arrays of sense electrodes and the linear arrays of groundelectrodes.

In the foregoing implementation, the linear array of sense electrodescan include four large diamond-shaped sense electrodes arranged in aline parallel to the axis of the arm segment, and each linear array ofground electrodes can include three large diamond-shaped groundelectrodes arranged in a line parallel to the axis of the arm segmentand patterned between adjacent linear arrays of sense electrodes, asshown in FIG. 1. In each array of sense electrodes, the four senseelectrodes can be electrically connected in series, and one senseelectrode in the array can be electrically connected to one channel onthe controller 123 via a trace of similar geometry. Similarly, in eacharray of ground electrodes, the three ground electrodes can beelectrically connected in series, and one ground electrode in the arraycan be electrically connected to one port on the controller 123 via atrace of similar geometry.

In one example, for a 12″-long arm segment defining a cylindricalcross-section 1″ in external diameter, each linear array of senseelectrodes can be printed or otherwise applied to the outside surface ofthe arm segment, wherein each sense electrode is 1.5″ in maximumcorner-to-corner length along the axis of the arm segment, is offsetfrom an adjacent sense electrode in the same linear array by acenter-to-center distance of 2″, and spans a radial distance of ˜80°about the exterior surface of the arm segment. In this example, eachlinear array of sense electrodes can be radially offset from an adjacentlinear array by 90°. In this example, the first, second, third, andfourth linear arrays of ground electrodes can define ground electrodesof similar geometry, can be radially offset 45° from adjacent arrays ofsense electrodes, and can be shifted longitudinally along the armsegment by 1″ relative to the linear arrays of sense electrodes tocenter linear arrays of ground electrodes between adjacent arrays ofsense electrodes, as shown in FIG. 1. The controller 123 and theprocessor 150 can then cooperate: to scan adjacent ground/senseelectrode pairs across the arm segment; to detect changes in capacitancevalues (e.g., changes in RC or LC time constant, changes incharge/discharge rate, etc.) in select electrode pairs across two ormore sampling periods; and to correlate these changes in capacitancevalues with proximity of an object to particular electrode pairs. Theprocessor 150 can then implement methods and techniques described aboveto determine if an object is approaching the arm segment (or if the armsegment is approaching an object) and a particular region on the armsegment that is nearest the object.

In the foregoing implementations, electrodes of substantially similargeometries can be printed, installed, or otherwise fixed to an armsegment in substantially uniform linear and/or radial patterns andconnected to the controller 123 in parallel (e.g., for projectedself-capacitance configurations) or in series (e.g., for projectedmutual-capacitance configurations). Generally, the system 100 caninclude a substantially uniform density of electrodes patterned over thearm segment. For example, the set of sense electrodes can include senseelectrodes of substantially similar diamond-shaped geometries, spacedlongitudinally along the arm segment at a uniform center-to-centerlinear offset, and spaced radially about the arm segment at a uniformcenter-to-center angular offset. In this example, the set of groundelectrodes can include ground electrodes of similar geometries andspaced according to substantially uniform longitudinal and radialoffsets.

Alternatively, electrodes can be printed, installed, or otherwisecoupled to an arm segment in non-uniform patterns (e.g., at varyinglongitudinal and radial offsets). In particular, the system 100 caninclude a non-uniform density of electrodes and/or a set of electrodesof non-uniform size and/or geometry patterned across an arm segment. Inone example implementation, a posterior end of the first arm segment 120is connected to the base 110 via a first driven axis, and a posteriorend of the second arm segment 130 is connected to the anterior end ofthe first arm segment 120 via a second driven axis. In this exampleimplementation, a first set of electrodes is patterned across the firstarm segment 120 at a first electrode density (in the radial and/orlongitudinal dimensions) proximal the posterior end of the first armsegment 120 and transitioning to a second electrode density proximal theanterior end of the first arm segment 120, the second electrode 131density greater than the first electrode 121 density. In this exampleimplementation, a second set of electrodes is similarly patterned acrossthe second arm segment 130 at a third electrode density proximal theposterior end of the second arm segment 130 and transitioning to afourth electrode density proximal the anterior end of the second armsegment 130, the fourth electrode density greater than the thirdelectrode density, which can be greater than the second electrode 131density. In this example, as the density of electrodes along an armsegment increases, the size (e.g., the area) of electrodes can decreaseaccordingly, as shown in FIG. 2. The system 100 can therefore include aset of multiple discrete electrodes arranged in an electrode patterncharacterized by greater electrode densities at greater distances fromthe base 110. The system 100 can thus detect objects at greaterdistances from the system 100 proximal the base 110 by sampling larger,lower density electrodes proximal the base 110 (though at relatively lowpositional resolution); and the system 100 can also detect nearerobjects with greater positional and directional sensitivity by samplinghigher-density clusters of smaller electrodes proximal the distal end ofthe robotic arm 102.

In another example implementation, a set of electrodes is patternedacross an arm segment at a first electrode density (in the radial and/orlongitudinal dimensions) proximal the longitudinal center of the armsegment and transitioning to a second electrode density proximal theanterior and posterior ends of the arm segment, the second electrode 131density greater than the first electrode 121 density, as shown in FIG.2. In this example implementation, the system 100 can include a set ofmultiple discrete electrodes arranged in an electrode patterncharacterized by greater electrode density at greater distances from thelongitudinal center of an arm segment. The system 100 can thus detectdistant objects approaching the arm segment (or a distant object thatthe arm segment is approaching) by sampling a lower-density cluster oflarger electrodes proximal the longitudinal center of the arm segment;and the system 100 can also detect nearer objects approaching the armsegment (or a distant object that the arm segment is approaching) withgreater positional and directional sensitivity by sampling ahigher-density cluster of smaller electrodes proximal the longitudinalends of the arm segment.

In the foregoing implementation, smaller electrodes arranged inhigher-density patterns proximal one or both ends of an arm segment canfunction as proximity sensors and/or as control sensors. In particular,the controller 123 and the processor 150 can cooperate to sample andprocess outputs from these smaller electrodes to identify nearby objects(e.g., within a range of up to 1″ from an electrode); as the objectnears the arm segment (or as the arm segment nears the object) and thentouches the arm segment proximal a smaller electrode, the controller 123and/or processor can continue to detect the presence and position of theobject on the arm segment based on capacitance values read from thesecontrol electrodes following contact with the object. The processor 150can then correlate a position or change in position of the object (e.g.,a finger) on the arm segment with a control function, such as tomanipulate an end effector or to lock or release an actuatable axisbetween two arm segments, as described below.

Alternatively, the system 100 can include a first set of electrodesconfigured to detect proximity of an object near an arm segment and asecond set of electrodes configured to detect control inputs on thesurface of the arm segment. In this implementation, the first set ofelectrodes can define a first electrical circuit controlled by a firstcontroller, and the second set of electrodes can define a second circuitdistinct from the first sense circuit 122 and controlled by a seconddistinct controller. In one example, an arm segment 12″ in length and 1″in diameter includes a set of four 9″-long, 80°-wide sense electrodes,including one sense electrode arranged on each of the dorsal, ventral,left-lateral, and right-lateral sides of the arm segment, extending fromthe posterior end of the arm segment (i.e., nearest the base 110), andterminating 3″ from the anterior end of the arm segment; the firstcontroller can thus sample each of the four sense electrodes in seriesand pass collected capacitance data to the processor 150, and theprocessor 150 can manipulate these data substantially in real-time todetermine if an object is approaching the arm segment and/or if the armsegment is approaching an object, as described below. In this example,the arm segment can also include a second set of (e.g., 20) 2″-long,0.5″-wide, 0.1″-trace-width, chevron-shaped control electrodes patternedradially about the distal end of the arm segment in a nestedconfiguration between the first set of sense electrodes and the anteriorend of the arm segment, as shown in FIG. 3. The controller 133 can thussample the second set of control electrodes in series (e.g., accordingto projected self-capacitive sensing techniques) and pass collectedcapacitance data to the processor 150, and the processor 150 canmanipulate these data substantially in real-time to determine if anobject in contact with the distal end of the arm segment is movingclockwise or counterclockwise about the arm segment and/or if the objectis moving toward the anterior end or toward the posterior end of the armsegment, as described below.

In the foregoing implementation, an arm segment can include a similarset of control electrodes along its proximal end (i.e., adjacent itsposterior end nearest the base 110). However, arm segments within therobotic arm 102 can include the same or different combinations of senseand control electrode 170 geometries arranged in any other suitablepattern. The processor 150 can process data received from the senseelectrodes and from the control electrodes: 1) to adjust the speedand/or direction of each arm segment during execution of a trajectorybased on detected proximity of an object to the robotic arm 102 and/or2) to manipulate various actuatable axes within the system 100 based ondetected deliberate contact with arm segments within the robotic arm102, respectively, as described below.

5.2 Single Electrode

In an alternative variation, rather than an array of multipleelectrodes, an arm segment includes a single electrode. For example, anarm segment can include a single sense electrode arrangedcircumferentially about and extending along the length of the armsegment, and a controller coupled to the single sense electrode canoutput a signal representative of proximity of an object to the armsegment generally. In another example, the arm segment can include asingle rectangular sense electrode extending along the dorsal side ofthe arm segment, and a controller coupled to this lone rectangular senseelectrode can output a signal representative of proximity of an objectto the dorsal side of the arm segment.

5.3 Additional Electrodes

In one variation, the system 100 further includes: an end effector; oneor more sense and/or control electrodes arranged on the end effector140; and an end effector controller configured to read capacitancevalues from electrodes arranged on, arranged within, or integrated intothe structure of the end effector 140. In this variation, the system 100can further include an end effector junction 182 at the end of therobotic arm 102 (e.g., at the distal end of the second arm segment 130)configured to transiently engage an end effector; the end effector 140junction can also include a sensor plug (or receptacle) configured tomate with a sensor receptacle (or sensor plug) in the end effector 140and coupled to the processor 150 via hookup wires (e.g., a ribbon cable)extending from the end effector 140 junction receptacle to the base 110.The end effector 140 controller and the processor 150 can implementmethods and techniques similar to those described below to detect andrespond to an object approaching the end effector 140 (or an objectapproached by the end effector 140) during operation of the robotic arm102, such as during execution of a preplanned trajectory.

Each actuatable axis can similarly include one or more sense and/orcontrol electrodes. These electrodes can be coupled to and read by acontroller in an adjacent arm segment, or each actuatable axis caninclude a dedicated controller that reads capacitance values ofelectrodes in the same actuatable axis and that communicates thesecapacitance values to the processor 150, and the processor 150 canimplement methods and techniques similar to those described below todetect and respond to an object approaching an actuatable axis (or anobject approached by the actuatable axis) during operation.

6. Ground-Plane Electrode

In one variation, the system 100 also includes a ground-plane electrodearranged under the sense, ground, and/or control electrode 170 layersdescribed above. In this variation, the ground-plane electrode can bearranged under and extend across the sense, ground, and/or controlelectrode 170 layers (i.e., opposite the exterior surface of the armsegment). In one example implementation, the ground-plane electrode isintegrated into or physically coextensive with the structure of the armsegment (or with an aesthetic cover or non-structural housing installedover the arm segment). For example, the arm segment can include a rigidcomposite carbon fiber/epoxy structure with one or more carbon fiberlayers connected to a ground channel of a controller installed on thearm segment. Alternatively, the arm segment can include a discreteconductive layer printed or otherwise applied to the arm segment, asdescribed below.

In one implementation, an arm segment includes an aesthetic coverarranged over a rigid beam connected on each end to an actuatable axis;and the aesthetic cover includes a ground plane electrode 160 arrangedacross (e.g., printed, deposited, or applied to) the interior surface ofthe aesthetic cover and one or more sense, ground, and/or controlelectrodes arranged across the exterior surface of the aesthetic cover.In this implementation, the controller 123 can drive the groundelectrode to a reference electric ground potential, such as analternating reference electric ground potential. Furthermore, in thisimplementation, a housing arranged over the base 110, the end effector140, and other elements within the robotic arm 102 can include a groundplane electrode 160 under or adjacent sense, ground, or controlelectrodes; and one or more controllers within the system 100 can driveeach ground plane electrode 160 to a common reference electric groundpotential.

7. Electrode Integration

In one variation, electrodes are integrated into the structure of an armsegment. For example, an arm segment can include a composite wovencarbon fiber and epoxy tube (e.g., a hollow cylinder), and select fiberswithin the tube can be electrically isolated from other fibers withinthe tube and connected to ports on a controller to form a set ofdiscrete electrodes. In another example, the structure of an arm segmentis formed by wrapping uni- and/or multi-direction woven carbon fiberleafs around a mandrel. In this example, woven carbon fiber patchessandwiched between two non-conductive layers (e.g., two sheets of paper)are applied over a first set of carbon fiber leafs installed on themandrel, leads (e.g., copper wires) are connected to each carbon fiberpatch, and the carbon fiber patches are then covered by a second set ofcarbon fiber leafs. Once epoxy in the carbon fiber wrap is cured, themandrel is removed and the leads are connected to corresponding ports ona controller.

In a similar example, electrodes are cut from conductive foil (e.g., bydie cutting, laser cutting, etc.), such as in discrete foil patches orin an array of foil patches connected by narrow traces and cut from asingle foil sheet. The electrodes can be coated in a non-conductivematerial, such as polyethylene, and installed over a first layer (orfirst set of layers) of woven carbon fiber wrapped around a mandrel; asecond layer (or second set of layers) of woven carbon fiber can then bewrapped around the electrodes and the first layer(s) of woven carbonfiber. In this example, an additional layer of electrodes can then beinstalled over the second layer(s) of woven carbon fiber, such as offsetfrom electrodes in the layer below, and a third layer (or third set oflayers) of woven carbon fiber can then be wrapped around this second setof electrodes. Once epoxy embedded in the woven carbon fiber layers iscured and the mandrel removed, one lead from each discrete electrode orone lead from each array of electrodes can be connected to a controller,which can later implement self-capacitance or mutual-capacitance sensingtechniques, respectively, to detect objects nearby and/or in contactwith the arm segment. In another example, conductive wire, conductivewire mesh panels, or other conductive elements can be similarly embeddedin the functional structure of an arm segment.

In another implementation, electrodes are applied to a surface of an armsegment. In one example, an arm segment, a composite, polymer, and/ormetal tubular (e.g., thin-walled, cylindrical) structure defining anexterior surface are covered or coated in a non-conductive material(e.g., epoxy, polyester resin, etc.). In this example, a first layer ofelectrodes are screen-printed in a conductive ink over the exteriorsurface of the arm segment; solder pads or solder-free contact pads andleads connecting the pads to corresponding electrodes in the first layerof electrodes can be similarly printed over the exterior surface of thearm segment. The pads can then be masked and a layer of non-conductivematerial subsequently sprayed, rolled, or printed over the first layerof electrodes. For a mutual-capacitance sensing configuration, a secondlayer of electrodes, leads, and pads can be similarly screen-printed ina conductive ink over the layer of non-conductive material; pads in boththe first and second layer of electrodes can then be masked and a secondlayer of non-conductive material applied over the arm segment to enclosethe second layer of electrodes. Ground-plane electrodes and/oradditional layers of (sense and/or control) electrodes can be similarlyapplied over the exterior surface of the arm segment.

In another example, a layer of conductive material (e.g., a0.0005″-thick copper or tin layer) can be sputtered, blast-coated,hot-dipped, plated, or otherwise applied over the exterior surface ofthe arm segment. In this example, electrodes, traces, solder pads,and/or solder-free contact pads, etc. can be masked over the layer ofconductive material, such as by a screen-printing process, and exposedregions of the conductive material then removed from the arm segment byetching (e.g., an acid wash), thereby forming a first layer ofelectrodes, traces, and pads on the exterior surface of the arm segment.As described above, a layer of non-conductive material can then beprinted, deposited, wrapped or otherwise applied over this first layerof electrodes, and one or more additional layers of electrodes can besimilarly formed over the first layer of non-conductive material.

Methods and techniques similar to those described in the foregoingimplementations can also be implemented to apply one or more electrodelayers to the interior surface of the arm segment in addition to orinstead of electrode layers applied to the exterior surface of the armsegment. The controller 123 and a ribbon connector (or similar hookupwire connector) can then be installed on or in the arm segment, asdescribed below.

In another implementation, one or more layers of electrodes are formedon a flexible printed circuit board (or “PCB”), such as on a polyetherether ketone (PEEK) or polymide film. In this implementation, theflexible PCB can be wrapped around and fastened to the exterior of thearm segment. For example, the flexible PCB can be adhered (e.g., glued)to the exterior surface of the arm segment. In another example, theflexible PCB is wrapped around the arm segment, the arm segment andflexible PCB are inserted into a tube of heat-shrink tubing, and theheat-shrink tubing is shrunk—by heating—around the arm segment to fastenthe flexible PCB to the arm segment. In this implementation, the armsegment can include male registration features (e.g., embossed dimples,pins) on its exterior surface, and the flexible PCB can include femaleregistration features (e.g., holes) that align with the maleregistration features to locate the flexible PCB on the arm segment.

In a similar implementation, one or more electrode layers are formed ina flexible PCB, and the flexible PCB is inserted (e.g., “stuffed”) intothe interior volume of the arm segment. In this implementation and theforegoing implementation, the controller 123 can be installed on theflexible PCB before the flexible PCB is installed in or around the armsegment. A ribbon connector (or similar hookup wire connector) can alsobe installed on the flexible PCB before the flexible PCB is installed inor around the arm segment, and a ribbon cable can be routed from theribbon connector to the processor 150 in the base 110 during assembly ofthe system 100, such as shown in FIG. 3.

One variation of the system 100 includes an aesthetic cover (e.g., atwo-part clamshell cover) that encases an arm segment. In thisvariation, the foregoing methods and techniques can be implemented tointegrate or install electrodes, traces, pads, and/or a controller intoor onto a surface of the aesthetic cover. The aesthetic cover can thusbe installed on the arm segment (e.g., over a rigid beam extendingbetween actuatable axes on each side of the arm segment); and acontroller arranged within the aesthetic cover can read capacitancevalues of these electrodes and communicate these capacitance values tothe processor 150, as described herein. Actuatable axes, an endeffector, and/or the base 110, etc. can also include housings or coverswith electrodes similarly embedded or applied and similarly connected tothe processor 150 via shared or dedicated controllers and ribbon cables.

8. Controller

The controller 123 is configured to measure the capacitance value of asense circuit during actuation of the robotic arm 102 and to return thiscapacitance value to the processor 150. Generally, the controller 123functions to execute Block S120 (and Block S122) of the method to read acapacitance value of a sense circuit during a sampling period and toreturn this value to the processor 150 for analysis, as described below.For example, the controller 123 can measure a total charge/dischargetime, a discharge time, a resonant frequency, and/or an RC or LC timeconstant for a driven electrode and an adjacent ground electrode in amutual-capacitance system during a single sampling period.

The controller 123 can measure a capacitance value of a sense circuit ata regular (i.e., static) sampling rate, such as at a rate of 20 Hz.Alternatively, the controller 123 can measure a capacitance value of asense circuit when the robotic arm 102 reaches a predefined waypointalong a preplanned trajectory. For example, the processor 150 can trackthe position of the end effector 140 in space during execution of apreplanned trajectory based on position values read from positionsensors within each actuatable axis and trigger the controller 123 tomeasure a capacitance value of the sense circuit following each 1″change in absolute position of the end effector 140 along the preplannedtrajectory. In this example, the controller 123 can measure a firstcapacitance (e.g., a first resonant frequency) of a first sensecircuit—coupled to a first electrode extending over a first arm segmentof the robotic arm 102—at a first time in which the robotic arm 102occupies a first position along the trajectory in Block S120 and thenmeasure a second capacitance (e.g., a second resonant frequency) of thefirst sense circuit 122 at a second time in which the robotic arm 102occupies a second position along the trajectory in Block S122.

A controller can be integrated directly into an arm segment (or into anactuatable axis, into an end effector, into the base 110, etc.). In oneimplementation in which electrodes on or within an arm segment areelectrically connected to a set of solder pads or solder-free contactpads, such as via a set of traces or leads, a controller (e.g., one ormore integrated circuits, multiplexers, ribbon connectors, etc.) can beinstalled on (e.g., soldered onto) a rigid controller PCB including aset of traces terminating in a set of conductive areas in a patterncorresponding to the contact pads; conductive foam can be adhered overeach conductive area, and the controller 123 PCB can be aligned over thecontact pads and fastened (e.g., with a threaded fastener), adhered(e.g., with an epoxy or potting material), strapped, or otherwisecoupled to the arm segment. In this implementation, because the contactpads may span a curved (i.e., non-planar) surface on the interior orexterior of the arm segment, the conductive foam pads can absorb gapsbetween and ensure reliable contact between conductive areas on thecontroller 123 PCB and the corresponding contact pads on the armsegment.

Alternatively, as described above, a controller can be integrated into aflexible PCB wrapped around or stuffed into an arm segment (or into anaesthetic cover installed on an arm segment). Yet alternatively, the armsegment can define a substantially planar region on its interior surfaceor on its exterior surface. In this implementation, each electrode orarray of electrodes on the arm segment can be electrically connected toa contact pad within the planar region, and the controller 123 (e.g.,one or more integrated circuits, multiplexers, ribbon connectors, etc.)can be installed directly onto corresponding contact pads, such as withlow-temperature solder paste or with a conductive adhesive (e.g., acopper powder/epoxy adhesive). However, the controller 123 (orcontroller circuit) can be installed or connected to discrete electrodesor electrode arrays on a corresponding arm segment in any other suitableway.

8.1 Projected Mutual-Capacitance

In one variation in which an arm segment of the robotic arm 102 includesa set of ground electrodes (e.g., in rows) in a first layer and a set ofsense electrodes (e.g., in columns) in a second layer isolated from thefirst layer by a dielectric layer, the controller 123 can selectivelyground and drive select ground electrode channels and select senseelectrode channels, respectively, to capture capacitance values orchanges in capacitance values along the arm segment; the processor 150can collect these capacitance data from the controller 123 substantiallyin real-time and can correlate these data with proximity of an object tothe arm segment.

For example, within a sampling period, the controller 123 can: hold afirst ground electrode channel in the array of ground electrode channelsat ground; float the remaining ground electrode channels; test a firstsense electrode channel in the array of sense electrode channels; testthe remaining sense electrode channels in series; float the first groundelectrode channel and ground a second ground electrode channel in thearray of ground electrode channels; continue to float the remainingground electrode channels; test the first sense electrode channel in thearray of sense electrode channels; and test the remaining senseelectrode channels in series; and repeat this process sequentially forthe remaining ground electrode channels within the sampling period.

To test a sense electrode, the controller 123 can drive a single senseelectrode channel during a sense period to load a particular senseelectrode in the sense electrode channel with charge such that theparticular sense electrode capacitively couples to a particular groundelectrode—adjacent the particular sense electrode—that is simultaneouslyconnected to ground during the sense period. The particular senseelectrode and the particular ground electrode can thus define an“electrode pair” in which charge collects on the particular senseelectrode and leaks into the particular ground electrode during thesense period and/or onto an external object nearby.

In one implementation, for each electrode pair tested within a samplingperiod, the controller 123 reads a charge and/or discharge time for anelectrode pair and stores this charge and/or discharge time in acapacitance matrix for the sampling period. In this implementation, thecapacitance matrix can correspond to the current sampling period, andeach position (or “electrode address”) within the capacitance matrix cancorrespond to a charge and/or discharge time read from a particularelectrode pair on the arm segment, and the controller 123 can write thecharge/discharge time for each electrode pair to the correspondingaddress in the capacitance matrix. The controller 123 can then transmitthis capacitance matrix (and a timestamp for the current samplingperiod) to the processor 150, such as via serial communication (e.g.,via I2C or via a two-wire communication protocol).

In a similar implementation, the controller 123: tests the resonantfrequency of each electrode pair on the arm segment in series during asampling period; records these resonant frequencies in correspondingaddresses within a capacitance matrix for the current sampling period;and then transmits this capacitance matrix (in real-time) to theprocessor 150. The processor 150 can then transform these data intoidentification of a nearby object substantially in real-time, asdescribed below.

Alternatively, the controller 123 can selectively couple and decoupleeach electrode pair on the arm segment to an input channel on theprocessor 150. For example, the controller 123: can include an analogsensor output channel connected to an analog sensor input channel on theprocessor 150 via a first hookup wire routed from the arm segment to thebase 110; can include a control input channel connected to a controloutput channel on the processor 150 via a second hookup wire similarlyrouted between the arm segment and the base 110; and can coupleelectrode pairs on the arm segment to the analog input channel on theprocessor 150 according to an electrode pair test address received fromthe processor 150. The processor 150 can then record a charge/dischargetime or a resonant frequency of an electrode pair corresponding to anelectrode pair test address passed to the controller 123. For example,the processor 150 can record a charge time across an electrode pair orread a change in the resonant frequency of an electrode pair on an armsegment and compare these values to a static or dynamic capacitancemodel to detect proximity of an object to the arm segment, as describedbelow.

In a similar implementation, the controller 123 includes a standardsigma-delta circuit or an equivalent-resistance sigma-delta circuitincluding an output connected to a digital input channel on theprocessor 150, such as via a first hookup wire. The sigma-delta circuitcan also be connected to an output channel of a clock arranged in thebase 110, such as a clock integrated into the processor 150 or arrangedon a motherboard adjacent the processor 150, via a second hookup wire.In this implementation, for each electrode pair on the arm segment, thecontroller 123 can selectively couple and decouple an electrode pairbetween a regulated input voltage and ground in a standard sigma-deltacircuit or between a regulated input voltage and the non-inverting inputof an Op-amp in an equivalent-resistance sigma-delta circuit in series.For each electrode pair connected to the sigma-delta circuit, thesigma-delta circuit can output a density-modulated bit stream, and theprocessor 150 can calculate the duty cycle of the density-modulated bitstream for each electrode pair within a sampling period and thentransform these duty cycle data into identification of a nearbyobject(s) within the sampling period, as described below. In thisimplementation, the controller 123 can cycle the ground electrodechannels between ground and float states and cycle the sense electrodechannels between driven and float states based on a clock signal fromthe clock and a static sampling procedure stored locally in thecontroller 123 or on a dynamic sampling procedure uploaded from theprocessor 150 to the controller 123 intermittently throughout operationof the system 100. Alternatively, the controller 123 can cycle theground electrode channels between ground and float states and cycle thesense electrode channels between driven and float states based onelectrode pair addresses received from the processor 150 (e.g., in realtime) during operation.

8.2 Projected Self-Capacitance

In another variation in which electrodes on the arm segment are arrangedin a single layer and are configured to capacitively couple to externalobjects proximal the arm segment, the controller 123 can implementself-capacitance sensing techniques to record capacitance values orchanges in capacitance values across an arm segment of the robotic arm102.

For example, in one sampling period, the controller 123 can connect oneside of a first electrode on the arm segment to a current supply andconnect a second side of the first electrode 121 to ground during afirst sense period, ground or float leads to all other electrodes on thearm segment during the first sense period, and record a total currentpassing through the first electrode 121 during the first sense period.Within one sampling period, the controller 123 can then: connect oneside of a second electrode on the arm segment to the current supply andconnect a second side of the second electrode 131 to ground during asecond (i.e., subsequent) sense period; ground or float leads to allother electrodes on the arm segment during the second sense period; andrecord a total current passing through the first electrode within thesame sense period. The controller 123 can repeat this process for eachelectrode on the arm segment to test all (or a subset of) electrodeswithin the sampling period. The controller 123 can aggregate these data,such as into an addressed capacitance matrix of current values, andcommunicate these data to the processor 150, such as described above.The processor 150 can then compare current draw values at each electrodeacross consecutive (or a set of consecutive) sampling periods to detectcurrent draw changes at select electrodes, and the processor 150 cancorrelate these current draw changes (e.g., increases in current draw)with proximity of an object to the corresponding electrodes.

Each arm segment can include a controller that implements self- ormutual-capacitance sensing techniques to test electrodes on thecorresponding arm segment in each sampling period. Each controller canpass capacitance values to the processor 150, such as serially or in onetimestamped capacitance matrix per sampling period, for analysis, asdescribed below. Alternatively, the system 100 can include onecontroller electrically coupled to a set of electrodes on (or in) eachof two or more arm segments, and the controller 123 can implement self-or mutual-capacitance sensing techniques to measure capacitance valuesor changes in capacitance values across the two or more arm segmentswithin a single sampling period. However, the controller 123 canfunction in any other way to capture capacitance values across one ormore arm segments and to feed these data to the processor 150.

9. Processor

The processor 150 functions to detect deviations (e.g., from a normal orknown condition) in the operating volume based on capacitance valuesreceived from one or more controllers in the robotic arm 102, to issueproximity alarms when such deviations are detected, and to cease ormodify actuation of the robotic arm 102 when proximity alarms areactive. In one implementation, the processor 150 is arranged in the base110, is connected to each controller housed in arm segments of therobotic arm 102 (e.g., via one or more ribbon cables), and receives andprocesses capacitance value data received from the controller 123 swhile the system 100 is in operation. For example, the system 100 caninclude one controller in each arm segment, in each actuatable axis, inthe base 110, and/or in an end effector, etc., and the processor 150 canreceive capacitance value data from each of these controllers duringeach sampling period or at each waypoint along a preplanned trajectory,process these data to detect an object approaching the robotic arm 102(or an object that the robotic arm 102 is approaching), and to cease ormodify a planned trajectory of each arm segment responsive to detectionof a new (i.e., unknown) object near the robotic arm 102. As describedabove, the processor 150 can receive capacitance values from eachcontroller, such as in the form of a total charge/discharge time, adischarge time, a resonant frequency, an RC or LC time constant, or aleakage current for each driven electrode, etc., and can apply static ordynamic threshold capacitance value models or parametric capacitancemodels to these capacitance data to determine whether a new object hasentered the robotic arm's operating volume.

10. Absolute Distance

In one implementation, the processor 150 compares capacitance datareceived from the controller 123(s) to a static capacitance value modelfor the robotic arm 102. The capacitance value model can definethreshold capacitance values for each sense and/or control electrode 170in the robotic arm 102. For example, an arm segment can include multipleelectrodes, each defining a different capacitive area, such as rangingfrom four square inches (e.g., sense electrodes) to 0.01 inches square(e.g., control electrodes), and tuned to detect proximity of an objectat a particular distance therefrom, such as up to a distance of 12″ fora sense electrode and to a distance of up to 0.25″ for a controlelectrode 170, respectively. In this example, the capacitance valuemodel can include a threshold capacitance value corresponding topresence of an object within a corresponding threshold distance for eachelectrode on the arm segment, and the processor 150 can comparecapacitance values received from the controller 123 to the thresholdcapacitance values in the capacitance value model to determine if anobject is within a threshold distance of a particular electrode on thearm segment.

The processor 150 can then estimate both a distance between the objectand the arm segment and a position of the object in space relative tothe arm segment during the sampling period based on: known positions ofeach electrode on the arm segment; which corresponding sense circuitsexhibited capacitance values that exceeded corresponding thresholdcapacitance values; and which corresponding sense circuits exhibitedcapacitance values that did not exceed corresponding thresholdcapacitance values during the current sampling period. In this example,the processor 150 can update the threshold capacitance values over time,such as based on capacitance values read by a reference electrodeintegrated into the base 110 to compensate for humidity, temperature,and/or other environmental changes.

In another implementation, the processor 150 implements a set ofparametric capacitance value models, including one distinct model perelectrode, wherein each model is tuned to transform a capacitance valueread from a corresponding electrode (i.e., from a corresponding sensecircuit) into an estimated distance of an object from the electrode. Foreach sampling period, the processor 150 can apply capacitance valuesread from each electrode during a sampling period to correspondingcapacitance value models to generate a capacitance matrix, capacitancemodel, or other container defining estimated distances between discretesurfaces on the robotic arm 102 and one or more objects in space as afunction of capacitance. Similarly, the processor 150 can implement asingle parametric capacitance value model that transforms a capacitancevalue, effective surface area, geometry factor, position, drive voltage,drive time, etc. of a particular electrode into an estimated distancebetween an object and the particular electrode on the robotic arm 102.In this example, the processor 150 can retrieve staticelectrode-specific values, such as electrode position and effectivesurface area, from a lookup table or other database in local (or remote)memory and can insert these data into the parametric capacitance valuemodel to estimate a proximity of an object to a particular electrode.

The processor 150 can also implement auto-correct techniques to adjustthe parametric capacitance value model(s) over time, such as tocompensate for sensor drift and environment changes. For example, theprocessor 150 can sample one or more environmental sensors integratedinto the system 100 to collect current humidity, temperature, and/orother quantitative environmental data for a sampling period and can theninsert these data directly into the parametric capacitance value modelwhen calculating object proximities across the robotic arm 102 for thesampling period. The processor 150 can additionally or alternativelytransmit a command to one or more controllers to modify a referencesignal driving a reference electrode on a corresponding arm segmentbased on an observed environment change.

For each sampling period, the processor 150 can also modify theparametric capacitance value model(s) based on the geometry of therobotic arm 102 (i.e., the angular position of each actuatable axis)during the sampling period. For example, the processor 150 can sample anencoder at each actuatable axis within the system 100 and can transformangular position data received from each encoder into a positioncapacitance matrix defining a position of each electrode in space. Inthis example, the processor 150 can transform the position capacitancematrix into a capacitive coupling capacitance matrix containingcapacitive coupling factors corresponding to estimated changes incapacitance values for each electrode on the robotic arm 102 due tocapacitive coupling with other (sense or control) electrodes on therobotic arm 102, which may be a function of the geometry of the roboticarm 102 when the electrodes are tested during the sampling period. Theprocessor 150 can then insert the capacitive coupling capacitance matrixor discrete capacitive coupling factors into the parametric capacitancemodel(s) to compensate for the effect of the geometry of the robotic arm102—which changes as the system 100 executes a trajectory—on capacitancevalues collected from the electrodes. In the implementation describedabove in which the processor 150 compares capacitance values receivedfrom a controller to a capacitance value model for the robotic arm 102,the processor 150 can similarly modify capacitance value thresholds inthe capacitance value model for a sampling period based on the geometryof the robotic arm 102 during the sampling period.

11. Relative Presence

In another variation, the processor 150: calculates a rate of change incapacitance of a sense circuit between a first time in which the roboticarm 102 occupies a first position in space and a second time in whichthe robotic arm 102 occupies a second position in space in Block S130;and issues a proximity alarm—substantially in real-time—if the rate ofchange in capacitance of the sense circuit exceeds a threshold rate ofchange in Block S140, as shown in FIG. 4. Generally, in this variation,the processor 150 calculates a rate of change in capacitance (e.g.,resonant frequency) between two positions occupied by the robotic arm102 over the course of a preplanned trajectory and identifies a possiblechange in the operating volume of the robotic arm 102 if this actualrate of change in capacitance differs from a baseline rate of change incapacitance for the same segment of the preplanned trajectory. Forexample, a sense circuit may exhibit both large amounts of noise andvariations in absolute capacitance value (i.e., “drift”) such that anabsolute capacitance value read from the sense circuit is—independent ofadditional data—unrepresentative of absolute distance between anelectrode in the sense circuit and an external object. However, aderivative of absolute capacitance values read from the sensecircuit—that is, a rate of change in capacitance value—may exhibitsignificantly less noise and significantly less drift than a singularabsolute capacitance value. The processor 150 can therefore calculate anactual rate of change in capacitance value of the sense circuit betweentwo positions along a preplanned trajectory, issue a proximity alarm ifa deviation in this actual rate of change in capacitance value deviatesfrom a baseline (or exceeds a threshold) rate of change in capacitancevalue, and repeat this process as the robotic arm 102 moves throughsuccessive positions along the preplanned trajectory.

11.1 Capacitance Value Rate of Change

As shown in FIG. 4, the processor 150 can therefore execute Block S130,which recites calculating a rate of change in capacitance of the sensecircuit based on a difference between a capacitance of the sense circuitmeasured at a first position of the robotic arm 102 and a secondcapacitance of the sense circuit measured at a second position of therobotic arm 102. Generally, in Block S130, the processor 150 can receivea sequence of capacitance values of the sense circuit from thecontroller 123, such as in the form of a feed of discrete capacitancevalues or in the form of timestamped capacitance matrices, as describedabove. The processor 150 can then subtract a last capacitance value ofthe sense circuit from a latest capacitance value of the sensor circuitand divide this sum by a time difference between measurement of the lastcapacitance value and the latest capacitance value to calculate the rateof change in capacitance of the sense circuit in Block S130 and comparethis actual rate of change to a baseline (or threshold) rate of changefor the same two positions along the preplanned trajectory. Theprocessor 150 can also calculate a running average rate of change incapacitance value over a sequence of sampling periods in Block S130 andcompare this actual average rate of change to an average baseline (orthreshold) rate of change for the sequence of positions along thepreplanned trajectory in Block S140. For example, the processor 150 cancalculate rates of change in capacitance value of the sense electrodefor adjacent pairs of sampling positions of the robotic arm 102 over acontiguous sequence of five total sampling positions or over acontiguous sequence of sampling positions spanning two inches ofdisplacement of the end effector 140 along the preplanned trajectory. Inthis example, this processor can average these rates of change incapacitance value, such as by applying a greatest weight to a mostrecent rate of change, before comparing this actual average rate ofchange to an average baseline (or threshold) rate of change for the sameor similar sequence of sampling positions along the preplannedtrajectory in Block S140.

However, the processor 150 can implement any other method or techniqueto calculate a rate of change in capacitance of the sense circuit inBlock S130. The processor 150 can execute this process to calculate arate of change in capacitance of each other sense circuit incorporatedinto one or more arm segments of the robotic arm 102; and the processor150 can store these rate of change values in a rate of change array orrate of change matrix for subsequent processing in Block S140.

11.2 Baseline Capacitance Map

As shown in FIG. 7, one variation of the method includes Block S160,which recites executing a capacitance mapping routine to generate abaseline capacitance map of a physical space occupied by the robotic arm102. In this variation, the controller 123 and processor can cooperateto generate a capacitance map of the robotic arm's operating volume:loading a capacitance mapping routine defining a mapping trajectory;moving the robotic arm 102 through the mapping trajectory; recording aset of absolute capacitance values of the sense circuit at discretewaypoints along the capacitance mapping route; transforming the set ofabsolute capacitance values into relative capacitance value changesbetween the discrete waypoints along the capacitance mapping route;aggregating the relative capacitance value changes into a baselinecapacitance map of a physical space occupied by the robotic arm 102; andcalculating the threshold rate of change between the first position andthe second position from the baseline capacitance map and a speed of therobotic arm 102 between the first position and the second position. Inparticular, the processor 150 can execute a capacitance mapping routineprior to autonomous operation, such as during setup and undersupervision of an operator, by navigating the robotic arm 102 through aset of waypoints defined within a capacitance mapping routine and thengenerating a capacitance map of the operating volume based oncapacitance data collected at these waypoints.

In one implementation, the processor 150 generates a capacitance map ofthe operating volume from data collected over a set of repeatedinstances of a preplanned trajectory (or “canned cycles”) over time. Inthis implementation, the processor 150 can implement closed-loopcontrols to navigate the robotic arm 102 through a final preplannedtrajectory; the controller 123 can measure capacitance values of thesense circuit(s) at each of a set of discrete waypoints along thepreplanned trajectory; and the processor 150 then compiles thesecapacitance values into a capacitance map of the operating volume. Inone example, once loaded with a preplanned trajectory for autonomousexecution by the system 100, the processor 150 executes a first instanceof the trajectory at a slow speed (e.g., 5% of a maximum speed of eachactuatable axis in the robotic arm 102 or 5% of a speed specified in thetrajectory) and compiles capacitance data received from the controller123 into a capacitance map of the operating volume until the firstinstance of trajectory is completed or until an impact with an externalobject is detected (e.g., via a signal output by an accelerometer, loadcell, or force sensor arranged within an actuatable axis). In thisexample, the controller 123 can sample the sense circuit(s) at a rate of20 Hz, 1 Hz, or at any other static sampling rate. Alternatively, thecontroller 123 can sample the sense circuit(s) at select waypoints alongthe trajectory, such as for each one-degree (1°) change in the positionof an actuatable axis or for each one-inch (1″) change in the absoluteposition of the end effector 140 in space. The processor 150 can thencalculate the difference in capacitance values between each pair ofconsecutive sampling periods or waypoints along the trajectory and paireach capacitance difference with a corresponding position of the roboticarm 102, such as in the form of an angular position of each actuatableaxis at the later of the pair of sampling periods or waypoints. If noimpact between the robotic arm 102 and an external object is detectedupon completion of the trajectory, the processor 150 can store thesecapacitance difference and robotic arm 102 position pairs in a baselinecapacitance map specific to the preplanned trajectory.

In the foregoing example, the processor 150 can then repeat thetrajectory at a greater speed, such as 20% of maximum speed of eachactuatable axis or 20% of the speed specified in trajectory. Duringexecution of this second instance of the trajectory, the processor 150can: navigate the robotic arm 102 to a first position (i.e., a first“waypoint”) along the trajectory; record capacitance values (e.g.,resonant frequencies) of the sense circuit(s) and read encoders in theactuatable axes at the first position; move the robotic arm 102 to asecond position (i.e., a second “waypoint”) along the trajectory; recordcapacitance values of the sense circuit(s) and read encoders inactuatable axes at the second position; and calculate an actual rate ofchange in capacitance of the sense circuit from the first position tothe second position along a trajectory and a duration of time occurringbetween realization of the first and second positions. The processor 150can also calculate a baseline rate of change in capacitance from thefirst position to the second position from capacitance differencesstored in the baseline capacitance map and the duration of time betweenrealization of the first position and the second position. The processor150 can then compare the actual rate of change in capacitance from thefirst position to the second position to the baseline rate of change;and continue execution of the trajectory if the actual and baselinerates of change are substantially similar, such as within a 5% thresholddifference. In particular, the processor 150 can navigate the roboticarm 102 to a third position (i.e., a third “waypoint”) along thetrajectory, repeat the foregoing process for the third position, movethe robotic arm 102 to a fourth position if a difference between actualand baseline rates of change between the second and third positions aresubstantially similar, etc. until the trajectory is completed or until acrash is detected.

The processor 150 can create a new baseline capacitance map from datacollected during this second instance of the trajectory or update theexisting baseline capacitance map with these data. The processor 150 cancontinue to repeat this process with the trajectory executed atincreasingly greater speeds—up to 100% of the maximum speed of the armor up to 100% of a speed specified for the trajectory—to refine thebaseline capacitance map for the trajectory. The processor 150 can thustest a trajectory and construct a baseline capacitance map for thetrajectory—without human supervision—by executing the trajectory atincreasingly greater speeds and leveraging a baseline capacitance mapgenerated in a previous, slower instance of the trajectory to predictchanges in the robotic arm's operating volume at increasingly fasterinstances of the trajectory. (The processor 150 can also implement theforegoing methods and techniques to update or refine the baselinecapacitance map during later full-speed runs of the preplannedtrajectory.)

In another example, the processor 150 can generate a single baselinecapacitance map during supervised execution of the trajectory. Forexample, when provided manual confirmation from an operator that therobotic arm's operating volume is clear, the system 100 can execute thetrajectory at full speed, and the processor 150 can assemble capacitancevalues received from the controller 123 into one baseline capacitancemap.

In another implementation shown in FIG. 7, the processor 150 generates atrajectory-agnostic capacitance map of the operating volume of therobotic arm 102 from capacitance values of the sense circuit(s)collected during a unique capacitance mapping routine. For example, theprocessor 150 can navigate the robotic arm 102 (or the end effector 140,specifically) to discrete positions within the three-dimensionaloperating volume reachable by the end effector 140 and recordcapacitance values of the sense circuit(s) at each discrete position. Inthis example, the process can access a list of baseline waypointsrepresenting a three-dimensional grid array of three-dimensionallyoffset positions within the operating volume, sequentially step therobotic arm 102 through each baseline waypoint in this list, and recordan absolute capacitance value of the sense circuit at each baselinewaypoint. The processor 150 can then implement methods and techniquesdescribed above to calculate a difference between capacitance valuesrecorded at each pair of adjacent baseline waypoints and then populate avirtual three-dimensional point cloud with the capacitance differencevalues and a position of the robotic arm 102 (or the end effector 140)at the corresponding baseline waypoint.

However, the processor 150 can implement any other methods or techniquesto generate a baseline capacitance map—containing absolute capacitancevalues, relative capacitance values, or rates of change in capacitancevalue—of the space occupied by the robotic arm 102. For example, theprocessor 150 can execute any of the foregoing methods and techniques togenerate a baseline capacitance map when the robotic arm 102 is firstplaced in a new environment, when the robotic arm 102 is repositionedwithin an environment, or when a new preplanned trajectory is loadedinto the system 100.

11.3 Threshold Rate of Change and Rate of Change Window

The processor 150 can then extract a threshold rate of change and/or arate of change window from the baseline capacitance map for comparisonto capacitance values read from the sense circuit during execution of asubsequent preplanned trajectory in Block S140.

In the implementation described above in which the processor 150generates a trajectory-agnostic baseline capacitance map, such as in theform of a three-dimensional point cloud, the processor 150 canasynchronously interpolate a rate of change window between each pair ofadjacent waypoints along a new trajectory when the new trajectory isloaded into the system 100 and before the new trajectory is firstexecuted by the system 100. For example, the processor 150 can access apredefined list of waypoints or calculate a set of waypoints, such asfor each 0.1″ or 1″ change in the position of the end effector 140 inspace. The processor 150 can then interpolate a target relative changein capacitance of the sense circuit for each pair of adjacent waypointsalong the trajectory by compiling (e.g., averaging, weighting)capacitance values—for one or more nearest baseline waypoints—stored inthe baseline capacitance map. In this example, the processor 150 canthen: estimate a duration of time spanning realization of two waypointsby the robotic arm 102 based on speed of the robotic arm 102—betweenthese two points—specified in the trajectory; calculate a target rate ofchange in capacitance between these two waypoints along the trajectoryby dividing the target relative change in capacitance between these twowaypoints by the estimated duration of time spanning their realizationby the robotic arm 102; and calculate a threshold rate of change incapacitance between these two waypoints from the target rate of changein capacitance, such as by setting the threshold rate of change at 105%of the target rate of change. During subsequent execution of thetrajectory, the processor 150 can calculate an actual rate of change incapacitance between these two waypoints along the trajectory, asdescribed above, and issue a proximity alarm in Block S140 if thisactual rate of change exceeds the threshold rate of change.

Alternatively, the processor 150 can define a rate of changewindow—spanning rates of change in capacitance not indicative of achange in the robotic arm's operating volume—between these twowaypoints. For example, the processor 150 can define a rate of changewindow spanning +/−5% of the target rate of change for the twowaypoints; during subsequent realization of the two waypoints along thepreplanned trajectory, the system 100 can calculate an actual rate ofchange in capacitance between these two waypoints and issue a proximityalarm if the actual rate of change falls outside of the rate of changewindow.

The process can implement similar methods and techniques for each otherwaypoint along the trajectory in order to generate a set of thresholdrates of change (or a set of rate of change windows) for each waypoint.The processor 150 can then reference this set of threshold rates ofchange (or rate of change windows) throughout subsequent execution ofthe trajectory to determine if the robotic arm's operating volume haschanged, such as whether an unknown object has entered thethree-dimensional volume reachable by the end effector 140.

Alternatively, the processor 150 can implement the foregoing methods andtechniques in real-time to calculate threshold rates of change or rateof change windows as the robotic arm 102 advances through the sequenceof waypoints within the preplanned trajectory, such as based on measured(e.g., “actual”) times spanning realization of adjacent waypoint pairsalong the trajectory.

Furthermore, for the robotic arm 102 that includes multiple senseelectrodes and sensor circuits on one arm segment and/or electrodes andsense circuits on multiple arm segments, the processor 150 can implementthe foregoing methods and techniques to generate a baseline capacitancemap containing absolute capacitance values, relative capacitance values,capacitance value differences, and/or rates of change in capacitancevalue for each sense circuit. The processor 150 can also: transformthese data into threshold rates of change (or rate of change windows)for each sense circuit between waypoints along a preplanned trajectory;and compare actual rates of change in capacitance of each sense circuitbetween two positions along the trajectory with corresponding thresholdrates of change (or rate of change windows) in Block S140. Inparticular, the processor 150 can identify specific arm segments orregions of the robotic arm 102 nearing an unknown object in theoperating volume based on a known position of an electrode—on therobotic arm 102—exhibiting a greatest deviation in rate of change incapacitance from a target rate of change (or threshold rate of change,rate of change window) defined in the baseline capacitance map betweentwo corresponding waypoints along the trajectory, as described below.

11.4 Detecting Proximity to New Static and Moving Objects

During execution of a preplanned trajectory, the processor 150 candetect a change in the operating volume of the robotic arm 102—such asin the form of a new static or moving object in the vicinity of therobotic arm 102—based on deviations in the rate of change in capacitanceof a sense circuit compared to a target or baseline rate of change. Forexample, the processor 150 can determine that an arm segment isapproaching—relatively—a new object within the operating volume if therate of change in capacitance of a sense circuit connected to anelectrode on the arm segment exceeds a threshold rate of change.

In one implementation, if the actual rate of change in capacitance of asense circuit exceeds a corresponding threshold rate of change between alast waypoint and a current waypoint (or sampling period), the processor150 can transform a difference between the actual and threshold (orcorresponding baseline) rates of change into a difference between theactual speed of the corresponding electrode to a nearby surface and atarget or expected speed of the electrode. The processor 150 can thensum this speed difference and the original target of expected speed toestimate a relative approach speed of the electrode to a new object inthe operating volume between the last and current waypoints or samplingperiods. The processor 150 can also transform a known position of theelectrode (e.g., the centroid of the electrode) on an arm segment andrates of change in the positions of each actuatable axis between thelast and current waypoints or sampling periods into an absolute speed ofthe electrode. The processor 150 can then compare the absolute speed ofthe electrode to the relative approach speed of the electrode to a newobject to determine if the new object is static or moving relative tothe electrode, as shown in FIG. 6. In particular, if the absolute speedof the electrode and the relative approach speed of the electrode aresubstantially similar (e.g., differ by no more than 10%), the processor150 can determine that the new object is static, set a proximity alarmfor an unknown static object in Block S140, and adjust motion of therobotic arm 102 accordingly, such as by reducing the speed of therobotic arm 102 by 50% in Block S150. However, if the relative approachspeed of the electrode substantially exceeds the absolute speed of theelectrode, such as by more than 10%, the processor 150 can determinethat the new object is moving toward the electrode, set a proximityalarm for an unknown object moving toward the robotic arm 102, and stopmotion of the robotic arm 102 altogether. Similarly, if the absolutespeed of the electrode substantially exceeds the relative approach speedof the electrode, the processor 150 can determine that the new object ismoving away from the electrode, set a proximity alarm for an unknownobject moving away from the robotic arm 102, and slow motion of therobotic arm 102, such as by 10%.

Therefore, the processor 150 can: transform a rate of change incapacitance of a sense circuit into a speed of the correspondingelectrode relative to an external object and issue a proximity alarm formotion toward a static object in Block S140 in response to the speed ofthe first electrode 121 relative to an external object approximating aspeed of the robotic arm 102 from the first position to the secondposition; and then reduce the current speed of the robotic arm 102 to afraction of the maximum of the robotic arm 102 while the proximity alarmfor motion toward a static object is current in Block S150. For example,the processor 150 can implement the foregoing methods and techniques todetect recent placement of a notepad, pencil, or other object within therobotic arm's operating volume and slow motion of the robotic arm 102accordingly until the offending object is removed from the operatingvolume. Similarly, the processor 150 can issue a proximity alarm formotion of a dynamic object toward the robotic arm 102 in Block S140 inresponse to the speed of the first electrode 121 relative to an externalobject exceeding a speed of the robotic arm 102 from the first positionto the second position; and cease motion of the robotic arm 102 whilethe proximity alarm for motion of a dynamic object toward the roboticarm 102 is current in Block S150. For example, the processor 150 canimplement the foregoing methods and techniques to detect movement of anoperator's hand toward the robotic arm 102 and to stop motion of therobotic arm 102 entirely until the operator's hand is removed from theoperating volume. The processor 150 can then execute methods andtechniques described below to unlock actuatable axes in the robotic arm102 if the operator grasps a region of the robotic arm 102, therebyenabling the operator to manually move the robotic arm 102.

The processor 150 can execute the foregoing methods and techniques todetect and confirm proximity of an unknown static or dynamic objectwithin the operating volume in Block S140 and can preserve and/ortighten reduced speed limits on motion of the robotic arm 102 until suchunknown static or dynamic object is no longer detected within theoperating volume. For example, when a static object within the operatingvolume is first detected, the processor 150 reduces the total speed ofthe robotic arm 102 by 20%; if the static object is again detected afterthe electrode through which the static object was detected moved towardthe general location of the static object by two inches (2″), theprocessor 150 can reduce the total speed of the robotic arm 102 by afurther 20%. However, if the electrode is determined to have moved awayfrom the static object, the processor 150 can return to full-speedactuation of the robotic arm 102.

11.5 Multiple Sense Circuits

As described above, the robotic arm 102 can include multiple armsegments, and each arm segment can include one or more electrodes andsense circuits. In this variation, the processor 150 can issue aposition proximity alarm based on known positions of electrodes coupledto sense circuits exhibiting deviant capacitance values (e.g., actualresonant frequencies exceeding threshold resonant frequencies).

In one example, the robotic arm 102 includes: a first arm segmentcoupled to the base 110 (or to a second arm segment extending from thebase 110) via a first actuatable axis; and a first electrode arrangedacross a dorsal side of the first arm segment 120 and coupled to a firstsense circuit. In Block S140, the processor 150 can issue a proximityalarm for motion in a first direction normal to the dorsal side of thefirst arm segment 120 in response to a rate of change in capacitance ofthe first sense circuit exceeding a threshold rate of change. In BlockS150, the processor 150 can selectively reduce the maximum actuationspeed of the first actuatable axis 124 in a direction that moves thefirst arm segment 120 in the first direction while the proximity alarmis current. Specifically, in Block S150, the processor 150 can reduce amaximum speed of the first actuation axis in a direction that moves thefirst arm segment 120 toward the unknown object, such as by reducing themaximum speed of the first actuation axis in the first direction (or inboth directions) by 50% or ceasing motion of the first actuation axisaltogether.

In the foregoing example, the robotic arm 102 can also include: a secondelectrode arranged across a lateral (e.g., left-lateral) side of thefirst arm segment 120 and coupled to a second sense circuit. In BlockS140, the processor 150 can also: selectively issue a second proximityalarm for motion in a second direction normal to the lateral side of thefirst arm segment 120 in response to a rate of change in capacitance ofthe second sense circuit 132 exceeding the threshold rate of change; andset a reduced maximum actuation speed of the second actuatable axis 134in a direction that moves the first arm segment 120 in the secondlateral direction when the second proximity alarm is current.

The robotic arm 102 can include additional arm segments includingaddition directional electrodes coupled to corresponding sense circuits,and the processor 150 can implement similar methods and techniques toissue directional proximity alarms and to set reduced actuation speedsfor select actuation axes based on capacitance values of these sensecircuits.

11.6 Detecting Distance to a New Object

In one variation, the robotic arm 102 includes multiple electrodespatterned across an arm segment and coupled to sense circuits exhibitingdifferent sensible ranges—that is, a range of distances between anelectrode and an external object over which relative motion of theexternal object yields detectable changes to a rate of change incapacitance of the sense circuit above a noise floor. In this variation,the processor 150 can implement the foregoing methods and techniques todetect deviations from expected or target rates of change in capacitanceof each electrode and fuse these deviations with the known (orapproximate) sensible range of each sense circuit to estimate a distancebetween an external object and the arm segment.

For example, the system 100 can include: a first electrode defining afirst area (e.g., ten square inches, or 10 in²), arranged on a first armsegment of the robotic arm 102, and coupled to a first sense circuitexhibiting a first sensible range (e.g., up to twenty inches, or 20″,for a four-ounce steel sphere); and a second electrode defining a secondarea less than the first area (e.g., two square inches, or 2 in²),arranged on the first arm segment 120 adjacent the first electrode 121,and coupled to a second sense circuit exhibiting a second sensible range(e.g., up to eight inches, or 8″, for the four-ounce steel sphere) lessthan the first sensible range. In this example, the processor 150 canestimate that an unknown object is within a first proximity range (e.g.,between eight inches and twenty inches, or between 8″ and 20″) of thefirst segment of the robotic arm 102 if a first rate of change incapacitance of the first sense circuit exceeds a corresponding thresholdrate of change while a second rate of change in capacitance of thesecond sense circuit remains at or near an expected rate of change(e.g., remains less than a corresponding threshold rate of change). Theprocessor 150 can issue a first proximity alarm for proximity of theunknown object within this first proximity range of the robotic arm 102in Block S140 and reduce the current speed of the robotic arm to a firstfraction (e.g., 50%) of the maximum speed of the robotic arm 102 whilethe first proximity alarm is current in Block S150.

However, the processor 150 can estimate that the unknown object iswithin a second proximity range less than the first proximity range(e.g., within eight inches, or within 8″) of the first segment of therobotic arm 102 if both the first rate of change in capacitance of thefirst sense circuit exceeds a corresponding threshold rate of change ifa second rate of change in capacitance of the second sense circuitexceeds a corresponding threshold rate of change. The processor 150 canissue a second proximity alarm for proximity of the unknown objectwithin this second proximity range of the robotic arm 102 in Block S140and reduce the current speed of the robotic to a second fraction—lessthan the first fraction—(e.g., 20% or 0%) of the maximum speed of therobotic arm 102 while the second proximity alarm is current.

The processor 150 can thus compare deviations in rate of change incapacitance of various electrodes characterized by different sensibleranges (for a common external object), to estimate a distance between anarm segment of the robotic arm 102 and an unknown external object.

However, the processor 150 can manipulate capacitance valuedata—received from one or more controllers during a sampling period orwhen the robotic arm 102 reaches a predefined waypoint—in any other wayto detect the presence of an unknown object within the robotic arm'soperating volume, to determine a position of the unknown object relativeto the robotic arm 102, and/or to determine a region of the robotic arm102 in contact with an object. The processor 150 can then issue aproximity alarm in Block S140 if an unknown object is detected. Theprocessor 150 can repeat this process over time, such as for eachsampling period or waypoint during execution of a trajectory, in orderto issue, respond to, and clear proximity alarms in real-time.

The processor 150 can also store object presence, position, and/ordistance data—generated capacitance data collected during a currentsampling period or at a current waypoint—in a proximity matrix for thecurrent sampling period or waypoint. The processor 150 can compare thiscurrent proximity matrix to a previous set of similar proximity matricesto track proximity, position, and/or distance of an unknown objectrelative to the robotic arm 102 over time. For example, for one samplingperiod or waypoint, the processor 150 can generate a proximity matrix(or proximity array or other container) addressing positions ofelectrodes coupled to sense circuits exhibiting actual capacitancevalues deviating from target or expected capacitance values (i.e., localpositions of current proximity alarms); the processor 150 can thenhandle each directional proximity alarm separately in Block S150 toavoid one or more unknown objects within the operating volume, such asdescribed below.

10. Object Avoidance

The processor 150 can also execute Block S150, which recites reducing acurrent speed of the robotic arm 102 moving through the trajectory inresponse to the proximity alarm. Generally, the processor 150 can setmaximum articulation speed limits for one or more actuatable axes in therobotic arm 102 when an unknown object is detected within the roboticarm's operating volume.

In one example, if the processor 150 determines from a sequence ofobject position matrices generated over a series of sampling periodsthat an object is near the left side of the robotic arm 102 and issubstantially static in space, the processor 150 can: issue a left sideproximity alarm in Block S140; and set speed limits for actuatable axesat the posterior ends of the first and second arm segments at 50% oftheir maximum speeds but set a speed limit for a rotary axis in the base110 at 50% of its maximum speed in the clockwise position and 10% of itsmaximum speed in the counter-clockwise position while the object remainsin approximately the same absolute position such that the robotic arm102 can extend, retract, and move away from the object relativelyquickly but can move toward the object only at a much slower speed.

Similarly, if the processor 150 determines from a sequence of objectposition matrices generated over a series of sampling periods that anobject is in front of the robotic arm 102 near the end effector 140 andis substantially static in space, the processor 150 can set speed limitsfor actuatable axes between arm segments at 50% of their maximum speedsfor motions that retract the robotic arm 102 away from the object and at10% of their maximum speeds for motions that extend the robotic arm 102toward the object such that the robotic arm 102 can retract from theobject relatively quickly but can move toward the object only at a muchslower speed. In this example, the processor 150 can continue to reducethe speed limits of select actuatable axes in the robotic arm 102 as therobotic arm 102 moves closer to the object, as shown in FIG. 5, such asup to a full-stop speed when the installed end effector is within 1″ ofthe object. The processor 150 can also increase speed limits on theactuatable axes as the robotic arm 102 moves away from the object. Theprocessor 150 can therefore dynamically adjust speed limits on selectactuatable axes within the robotic arm 102 based on both a distancebetween the robotic arm 102 and an external object and a position of anobject relative to the robotic arm 102.

The processor 150 can also set a maximum articulation speed of eachactuatable axes in the robotic arm 102 based on whether the robotic arm102 is moving toward the object or whether the object is moving towardthe robotic arm 102, as shown in FIG. 6. For example, the processor 150can compare proximity matrices generated during the current and the lastsampling periods to determine if a distance between a detected objectand a particular electrode (or set of electrodes) of known position onthe robotic arm 102 is increasing or decreasing; that is, the processor150 can determine an approximate velocity of the object relative to oneor more electrodes on the robotic arm 102 for the current samplingperiod based on proximity matrices generated over the current and thelast sampling periods and a duration between the current and the lastsampling period (i.e., the sampling rate). The processor 150 can alsogenerate an arm position capacitance matrix defining a position of eachelectrode (or other point on the robotic arm 102) in space—such as aJacobean capacitance matrix—for each sampling period. The processor 150can then calculate a velocity of each electrode (or of various otherpoints) on the robotic arm 102—such as relative to a reference point onthe base 110—for the current sampling period based on differencesbetween arm position matrices for the current and the last samplingperiod and the sampling rate. Thus, in one sampling period, if thevelocity of the object relative to an electrode on the robotic arm 102is negative, then the distance between the object and the electrode isdecreasing; if the distance between the object and the electrode isdecreasing and the velocity of the object relative to the electrode isgreater than the velocity of the electrode relative to the referencepoint, the object is approaching the electrode; and, if the distancebetween the object and the electrode is decreasing and the velocity ofthe object relative to the electrode is less than the velocity of theelectrode relative to the reference point, the electrode is approachingthe object. The processor 150 can generate these calculations for all orselect electrodes for each sampling period during operation of thesystem 100.

In the foregoing implementation, if the distance between the robotic arm102 (e.g., a particular electrode) and the object is decreasing and therobotic arm 102 is approaching the object, the processor 150 can setspeed limits for actuatable axes in the robotic arm 102 inversely withthe distance between the robotic arm 102 and the object—as describedabove—and ceasing all motion toward the object once the detecteddistance between the object and any point on the robotic arm 102 reachesa threshold minimum distance (e.g., 1″). The processor 150 can continueto monitor outputs of the controller 123 s in subsequent samplingperiods and release the robotic arm 102 for further motion toward theobject if the object moves away from the robotic arm 102. Thus, theprocessor 150 can slow the robotic arm 102 to a stop before contact andcan recommence the trajectory once the object is no longer in the pathof the robotic arm 102.

Alternatively, if the processor 150 determines that the distance betweenthe arm and the object is decreasing and the object is approaching therobotic arm 102, the processor 150 can reduce the speed limits foractuatable axes in the robotic arm 102 as the distance between therobotic arm 102 and the object decreases, as described above, such asdown to a speed limit of 2% of the maximum speed for any axis drivingthe robotic arm 102 toward the object, as shown in FIG. 6. The processor150 can continue to drive the robotic arm 102—though relativelyslowly—into the object according to the trajectory up to the point thatthe object contacts a surface of the robotic arm 102. When the processor150 detects that the object (e.g., a hand) has contacted the robotic arm102—such as based on capacitance data received from one or morecontrollers in the robotic arm 102 or based on an impact detected basedon an output of an accelerometer or force sensor arranged in anactuatable axis—the processor 150 can transition from a trajectoryexecution mode to a manual manipulation mode or into a training mode. Inthe manual manipulation mode or training mode, the processor 150 candrive the actuatable axes in the robotic arm 102 according to inputsdetected on the robotic arm 102, as described below. In particular, inthe manual manipulation or training mode, the processor 150 can hold therobotic arm 102 in a current position until manipulated by an object(e.g., a user's hand or finger) in contact with a surface of the roboticarm 102, and the processor 150 can record motions at each actuatableaxis as the robotic arm 102 is manipulated by the user. Once the objectis released from the robotic arm 102, the processor 150 can return toexecution of the trajectory, such as automatically or in response toconfirmation from a user via a surface on the robotic arm 102 or througha user interface in communication with the system 100.

The processor 150 can implement the foregoing methods and techniques toset speed limits for motion of select actuatable axes, for select armsegments, and/or for an installed end effector. For example, to avoid anunknown object detected within the operating volume when executing apreplanned trajectory, the processor 150 can drive a second actuatableaxis—between a first arm segment and a second arm segment—away from thedetected object, thereby moving the second actuatable axis 134 off ofits target path defined in the trajectory; simultaneously, the processor150 can drive other actuatable axes within the robotic arm 102 tosimilarly deviant positions such that the end effector 140 remains onits target path defined by the trajectory.

The processor 150 can also set a sampling rate for the controller 123(s)within the arm based on the speed of the robotic arm 102 (or a realspeed of each arm segment calculated from a real speed of eachactuatable axis). For example, the processor 150 can increase thesampling rate—and update capacitance value thresholds for each sensecircuit—as the velocity of the entire arm or of select actuatable axesincreases; and vice versa. However, the processor 150 can collect andmanipulate capacitance value data received from one or more controllersacross a sequence of sampling periods in any other suitable way to issueand handle proximity alarms.

11. Axis Controls

As described above, the process can enter a manual manipulation mode ora training mode when an object is in contact with a surface of therobotic arm 102; in the manipulation mode or a training mode, theprocessor 150 can unlock and/or actively drive various actuatable axeswithin the robotic arm 102 according to manual inputs on surfaces of therobotic arm 102.

In one example, a first arm segment connected to the base 110 at itsposterior end via a first actuatable axis can include a set ofchevron-shaped control electrodes patterned radially about its proximalend adjacent the first actuatable axis 124, as described above, and caninclude a set of sense electrodes patterned along its distal end. Inthis example, a second arm segment connected to the first arm segment120 via a second actuatable axis can include a set of sense electrodespatterned along its proximal end adjacent the second actuatable axis 134and can include a set of chevron-shaped control electrodes patternedradially about the distal end of the second arm segment 130, and agripper-type end effector can be connected to the third actuatable(e.g., rotary-driven) axis and can include a set of jaws actuated (i.e.,open and closed) by a fourth actuatable axis. In this example, theprocessor 150 can manipulate capacitance data collected from the senseelectrodes on the first and second arm segments to detect proximity ofan object to the robotic arm 102 and to adjust the speed and/ordirection of each arm segment during execution of a prerecorded orpredefined trajectory. Furthermore, in this example, the processor 150can manipulate capacitance data collected from the set of controlelectrodes on the first arm segment 120: to lock the first actuatableaxis 124 when an object remains in static contact with the proximal endof the first arm segment 120; to rotate the first actuatable axis 124 ina clockwise direction substantially in-sync with an object in contactwith and sliding radially in a clockwise direction about the proximalend of the first arm segment 120; to rotate the first actuatable axis124 in a counter-clockwise direction substantially in-sync with anobject in contact with and sliding radially in a counter-clockwisedirection about the proximal end of the first arm segment 120; to openthe second actuatable axis 134 as an object contacting the proximal endof the first arm segment 120 moves toward the anterior end of the firstarm segment 120; and to close the second actuatable axis 134 as anobject contacting the proximal end of the first arm segment 120 movestoward the posterior end of the first arm segment 120.

Similarly, the processor 150 can manipulate capacitance data collectedfrom the set of control electrodes on the second arm segment 130: tolock the third and fourth actuatable axes when an object remains instatic contact with the distal end of the second arm segment 130; torotate the third actuatable axis 184—and to therefore rotate thegripper-type end effector—in a clockwise direction substantially in-syncwith an object in contact with and sliding radially in a clockwisedirection about the distal end of the second arm segment 130; to rotatethe third actuatable axis 184 in a counter-clockwise directionsubstantially in-sync with an object in contact with and slidingradially in a counter-clockwise direction about the distal end of thesecond arm segment 130; to open the fourth actuatable axis—and totherefore open the jaws of the gripper-type end effector—as an objectcontacting the distal end of the second arm segment 130 moves toward theanterior end of the second arm segment 130; and to close the fourthactuatable axis as an object contacting the distal end of the second armsegment 130 moves toward the posterior end of the second arm segment130.

In another implementation, the robotic arm 102 includes: a set of armsegments arranged in series between the base 110 and the end effector140; a first electrode arranged on one side of a final arm segmentadjacent the end effector 140 (or end effector junction 182); and asecond electrode arranged on the opposite side of the final arm segmentadjacent the end effector 140. In this implementation, the processor 150can implement methods and techniques described above to interpretchanges in capacitance (or deviations from expected rates of change incapacitance) of a first sense circuit coupled to the first electrode 121and of a second sense circuit coupled to the second electrode 131 todetect contact between external objects and surfaces of the final armsegment adjacent (e.g., over) the first and second electrodes,respectively. When a first input (i.e., contact with an external object)at the first sense circuit 122 and a second input at the second sensecircuit 132—opposing the first input—are detected simultaneously, theprocessor 150 can interpret this pair of inputs as a grasping gesture onthe final arm segment and enable manual control of one or moreactuatable axes of the robotic arm 102 accordingly.

For example, the processor 150 can: detect a first contact between anobject and a first region of the final arm segment adjacent the firstelectrode 121 in response to a rate of change in capacitance of thefirst sense circuit exceeding a contact threshold rate of change—greaterthan a proximity threshold rate of change—indicating that an externalobject has contacted the final segment of the arm adjacent the firstelectrode 121. In particular, mechanical contact between an externalobject and the arm segment adjacent the first electrode 121 can bleedcurrent from the first electrode 121 at a greater rate than when theobject is near but not in contact with the arm segment, and theprocessor 150 can detect contact with an external object based on thisrate of change in capacitance of the first sense circuit. In thisexample, at approximately the same time, the processor 150 can implementsimilar methods and techniques to detect a second contact between anobject and a second region of the final arm segment adjacent the secondelectrode 131 in response to rate of change in capacitance of the secondsense circuit 132 exceeding the contact threshold rate of change. Theprocessor 150 can then: interpret the first contact and the secondcontact—occurring over similar periods of time—as a manual controlgesture to control an actuatable axis coupled to the final arm segment;and unlock the first actuatable axis 124 according to the manual controlgesture. In this example, the processor 150 can unlock the actuatableaxis coupled to the final arm segment opposite the end effector 140 toenable the operator to pivot the final arm segment relative to other armsegments and the base 110.

In the foregoing example, the system 100 can also include a thirdelectrode coupled to a third sense circuit and arranged on the final armsegment between the first region electrode and the second electrode 131.The processor 150 can implement methods and techniques as describedabove to detect a third contact between an object and a third region ofthe final arm segment adjacent the third electrode in response to rateof change in capacitance of the third circuit exceeding the contactthreshold rate of change. The process can then: interpret the firstcontact, the second contact, and the third contact as an extended manualcontrol gesture to control multiple actuatable axes within the roboticarm 102, such as both the first actuatable axis 124 between the finalarm segment and a second arm segment and a second actuatable axisbetween the second arm segment 130 and a third arm segment 180; andunlock these actuatable axes (e.g., the first actuatable axis 124 andthe second actuatable axis 134) according to this extended manualcontrol gesture.

However, the processor 150 can manipulate the robotic arm 102 in anyother suitable way based on inputs on surfaces of the robotic arm 102during execution of a manual manipulation mode or a training mode.

The system 100 s and methods described herein can be embodied and/orimplemented at least in part as a machine configured to receive acomputer-readable medium storing computer-readable instructions. Theinstructions can be executed by computer-executable componentsintegrated with the application, applet, host, server, network, website,communication service, communication interface,hardware/firmware/software elements of a user computer or mobile device,wristband, smartphone, or any suitable combination thereof. Othersystems and methods of the embodiment can be embodied and/or implementedat least in part as a machine configured to receive a computer-readablemedium storing computer-readable instructions. The instructions can beexecuted by computer-executable components integrated bycomputer-executable components integrated with apparatuses and networksof the type described above. The computer-readable medium can be storedon any suitable computer readable media such as RAMs, ROMs, flashmemory, EEPROMs, optical devices (CD or DVD), hard drives, floppydrives, or any suitable device. The computer-executable component can bea processor but any suitable dedicated hardware device can(alternatively or additionally) execute the instructions.

As a person skilled in the art will recognize from the previous detaileddescription and from the figures and claims, modifications and changescan be made to the embodiments of the invention without departing fromthe scope of this invention as defined in the following claims.

1. A method for controlling a robotic system, the method comprising:when the robotic system occupies a first position along a path at afirst time, sensing a first capacitance value of a first sense circuitcomprising a first electrode coupled to a first segment of the roboticsystem; when the robotic system occupies a second position along thepath at a second time succeeding the first time, sensing a secondcapacitance value of the first sense circuit; estimating a first speedof the first electrode relative to external mass based on a differencebetween the first capacitance value and the second capacitance value; inresponse to the first speed of the first electrode relative to externalmass approximating a speed of the robotic system between the first timeand the second time, issuing a proximity alarm for motion toward astatic object; and while the proximity alarm for motion toward a staticobject is current, reducing a current speed of the robotic system,moving along the path, to less than a maximum speed of the roboticsystem.
 2. The method of claim 1: wherein sensing the first capacitancevalue of the first sense circuit comprises sensing a first resonantfrequency of the first sense circuit at the first time; wherein sensingthe second capacitance value of the first sense circuit comprisessensing a second resonant frequency of the second sense circuit at thesecond time; and wherein estimating the first speed of the firstelectrode relative to external mass comprises estimating the first speedof the first electrode relative to external mass based on the differencebetween the first resonant frequency and the second resonant frequency.3. The method of claim 1, further comprising: at a third time succeedingthe second time, sensing a third capacitance value of the first sensecircuit; detecting contact between external mass and the first segmentof the robotic system based on the third capacitance value; and inresponse to detecting contact between external mass and the firstsegment of the robotic system, ceasing motion of the robotic system. 4.The method of claim 1, further comprising: at approximately a thirdtime: sensing a third capacitance value of the first sense circuit, thefirst electrode arranged proximal a first region of the first segment ofthe robotic system; and sensing a fourth capacitance value of a secondsense circuit comprising a second electrode arranged proximal a secondregion on the first segment of the robotic system offset from the firstregion; interpreting the third capacitance value as a first contact onthe first region of the robotic system; interpreting the fourthcapacitance value as a second contact on the second region of therobotic system; interpreting the first contact and the second contact asa manual control gesture to control a first actuatable axis coupled tothe first segment of the robotic system; and unlocking the firstactuatable axis in response to the manual control gesture.
 5. The methodof claim 1, further comprising: calculating a first rate of change incapacitance value of the first sense circuit based on a differencebetween the first capacitance value and the second capacitance value;sensing a second rate of change in capacitance value of a second sensecircuit comprising a second electrode, the second electrode coupled tothe first segment of the robotic system adjacent the first electrode anddefining a second area less than a first area defined by the firstelectrode; wherein issuing the proximity alarm comprises, in response tothe first rate of change exceeding a threshold rate of change and inresponse to the second rate of change falling below the threshold rateof change, issuing the proximity alarm for motion toward a static objectwithin a first proximity range of the robotic system, the firstproximity range corresponding to a first sensible range of the firstelectrode; and wherein reducing the current speed of the robotic systemcomprises reducing the current speed of the robotic system to a firstproportion of the maximum speed of the robotic system in response toissuance of the first proximity alarm.
 6. The method of claim 5, furthercomprising: between the second time and a third time: sensing a thirdrate of change in capacitance value of the first sense circuit; andsensing a fourth rate of change in capacitance value of the second sensecircuit; in response to the first rate of change and the second rate ofchange exceeding the threshold rate of change, issuing a secondproximity alarm for motion toward a static object within a secondproximity range of the robotic system, the second proximity rangecorresponding to a second sensible range of the second electrode lessthan the first sensible range; and in response to issuance of the secondproximity alarm, reducing the current speed of the robotic system to asecond proportion of the maximum speed of the robotic system, the secondproportion less than the first proportion.
 7. The method of claim 5,further comprising, prior to the first time: driving the robotic systemthrough a capacitance mapping route; recording a set of absolutecapacitance values of the first sense circuit responsive to the roboticsystem occupying each waypoint along the capacitance mapping route;transforming the set of absolute capacitance values into relativecapacitance value changes between the waypoints along the capacitancemapping route; aggregating the relative capacitance value changes into abaseline capacitance map of a physical space occupied by the roboticsystem; and calculating the threshold rate of change between the firstposition and the second position based on the baseline capacitance mapand a speed of the robotic system between the first position and thesecond position.
 8. The method of claim 1: further comprising drivingthe robotic system along the path by actuating a first actuatable axisinterposed between the first segment and a second segment of the roboticsystem and actuating a second actuatable axis interposed between thesecond segment and a base of the robotic system, the robotic systemdefining a robotic arm, the first segment approximating a first rigidbeam extending between the first actuatable axis and the secondactuatable axis, and the second segment approximating a second rigidbeam extending between the second actuatable axis and the base of therobotic system; and wherein reducing the current speed of the roboticsystem comprises setting a reduced maximum speed of rotation of thesecond actuatable axis while the proximity alarm for motion toward astatic object is current.
 9. The method of claim 1, further comprising:in response to the speed of the first electrode relative to externalmass exceeding the speed of the robotic system between the first timeand the second time, issuing a proximity alarm for motion of a dynamicobject toward the robotic system; and while the proximity alarm formotion of a dynamic object toward the robotic system is current, ceasingmotion of the robotic system.
 10. A method for controlling a roboticsystem, the method comprising: when the robotic system occupies a firstposition along a path at a first time, sensing a first capacitance valueof a first sense circuit comprising a first electrode coupled to a firstsegment of the robotic system; when the robotic system occupies a secondposition along the path at a second time succeeding the first time,sensing a second capacitance value of the first sense circuit;estimating a speed of the first electrode relative to external massbased on the difference between the first capacitance value and thesecond capacitance value; in response to the speed of the firstelectrode relative to external mass exceeding a speed of the roboticsystem between the first time and the second time, issuing a proximityalarm for motion of a dynamic object toward the robotic system; andwhile the proximity alarm for motion of a dynamic object toward therobotic system is current, reducing a current speed of the roboticsystem to less than a maximum speed of the robotic system.
 11. Themethod of claim 10, wherein reducing the current speed of the roboticsystem comprises ceasing motion of the robotic system while theproximity alarm for motion of a dynamic object toward the robotic systemis current.
 12. The method of claim 11, further comprising: in responseto the first speed of the first electrode relative to external massapproximating the speed of the robotic system between the first time andthe second time, issuing a proximity alarm for motion toward a staticobject; and while the proximity alarm for motion toward a static objectis current, reducing the current speed of the robotic system, movingalong the path, to a fraction of the maximum speed of the roboticsystem.
 13. The method of claim 10: further comprising driving therobotic system along the path by actuating a first actuatable axisinterposed between the first segment and a second segment of the roboticsystem and actuating a second actuatable axis interposed between thesecond segment and a base of the robotic system, the robotic systemdefining a robotic arm, the first segment approximating a first rigidbeam extending between the first actuatable axis and the secondactuatable axis, and the second segment approximating a second rigidbeam extending between the second actuatable axis and the base of therobotic system; and wherein reducing the current speed of the roboticsystem comprises setting a reduced maximum speed of rotation of thesecond actuatable axis while the proximity alarm for motion of a dynamicobject toward the robotic system is current.
 14. The method of claim 10:wherein sensing the first capacitance value of the first sense circuitcomprises sensing a first resonant frequency of the first sense circuitat the first time; wherein sensing the second capacitance value of thefirst sense circuit comprises sensing a second resonant frequency of thesecond sense circuit at the second time; and wherein estimating thespeed of the first electrode relative to external mass comprisesestimating the speed of the first electrode relative to external massbased on the difference between the first resonant frequency and thesecond resonant frequency.
 15. The method of claim 10: furthercomprising driving the robotic system along the path by actuating afirst actuatable axis interposed between the first segment and a base ofthe robotic system, the robotic system defining a robotic arm; whereinreducing the current speed of the robotic system comprises pausingexecution of the path while the proximity alarm for motion of a dynamicobject toward the robotic system is current; further comprising: atapproximately a third time: sensing a third capacitance value of thefirst sense circuit, the first electrode arranged proximal a firstregion of the first segment of the robotic system; and sensing a fourthcapacitance value of a second sense circuit comprising a secondelectrode arranged proximal a second region on the first segment of therobotic system offset from the first region; interpreting the thirdcapacitance value as a first contact on the first region of the roboticsystem; interpreting the fourth capacitance value as a second contact onthe second region of the robotic system; interpreting the first contactand the second contact as a manual control gesture to control a firstactuatable axis coupled to the first segment of the robotic system; andunlocking the first actuatable axis in response to the manual controlgesture.
 16. The method of claim 15, further comprising: atapproximately a fourth time succeeding the third time: sensing a fifthcapacitance value of the first sense circuit; and sensing a sixthcapacitance value of the second sense circuit; detecting release of thefirst contact from the first region of the robotic system based on thefifth capacitance value; detecting release of the second contact fromthe second region of the robotic system based on the sixth capacitancevalue; and in response to detecting release of the first contact and thesecond contact from the robotic system, resuming execution of the path.17. The method of claim 15, further comprising: in response to unlockingthe first actuatable axis, recording a second path of the firstactuatable axis as the robotic system is manipulated by a user; atapproximately a fourth time succeeding the third time: sensing a fifthcapacitance value of the first sense circuit; and sensing a sixthcapacitance value of the second sense circuit; detecting release of thefirst contact from the first region of the robotic system based on thefifth capacitance value; detecting release of the second contact fromthe second region of the robotic system based on the sixth capacitancevalue; and in response to detecting release of the first contact and thesecond contact from the robotic system, driving the first actuatableaxis through the second path.
 18. A method for controlling a roboticsystem, the method comprising: when the robotic system occupies a firstposition along a path at a first time, sensing a first capacitance valueof a first sense circuit comprising a first electrode coupled to a firstsegment of the robotic system; when the robotic system occupies a secondposition along the path at a second time succeeding the first time,sensing a second capacitance value of the first sense circuit;calculating a first rate of change in capacitance value of the firstsense circuit based on a difference between the first capacitance valueand the second capacitance value; calculating a second rate of change incapacitance value of a second sense circuit between the first time and asecond time, the second sense circuit comprising a third electrodeextending over a second segment of the robotic system; in response toone of the first rate of change in capacitance and the second rate ofchange in capacitance exceeding a threshold rate of change, issuing aproximity alarm; and while the proximity alarm is current, reducing acurrent speed of the robotic system, moving along the path, to less thana maximum speed of the robotic system.
 19. The method of claim 18:wherein issuing the proximity alarm comprises, in response to the firstrate of change exceeding the threshold rate of change and in response tothe second rate of change falling below the threshold rate of change,issuing the proximity alarm for motion toward external mass within afirst proximity range of the robotic system, the first proximity rangecorresponding to a first sensible range of the first electrode; and inresponse to the first rate of change and the second rate of changeexceeding the threshold rate of change, issuing a second proximity alarmfor motion toward external mass within a second proximity range of therobotic system, the second proximity range corresponding to a secondsensible range of the second electrode less than the first sensiblerange; and wherein reducing the current speed of the robotic systemcomprises: in response to issuance of the first proximity alarm,reducing the current speed of the robotic system to a first proportionof the maximum speed of the robotic system; and in response to issuanceof the second proximity alarm, reducing the current speed of the roboticsystem to a second proportion of the maximum speed of the roboticsystem, the second proportion less than the first proportion.
 20. Themethod of claim 18: further comprising driving the robotic system alongthe path by actuating a first actuatable axis interposed between thefirst segment and the second segment of the robotic system and actuatinga second actuatable axis interposed between the second segment and abase of the robotic system, the robotic system defining a robotic arm,the first segment approximating a first rigid beam extending between thefirst actuatable axis and the second actuatable axis, and the secondsegment approximating a second rigid beam extending between the secondactuatable axis and the base of the robotic system; and wherein reducingthe current speed of the robotic system comprises setting a reducedmaximum speed of rotation of the second actuatable axis while theproximity alarm is current.